#pragma once

typedef struct _vus_clip_base vus_clip_base;
typedef struct _vus_track_base vus_track_base;

/**
 * Gets the track object that owns a clip.
 *
 * @param self The clip.
 * @return A non-null track object that contains self.
 */
VENTUS_EXPORT vus_track_base *vus_clip_base_parent(vus_clip_base *self);

/**
 * Gets the starting position of a clip.
 *
 * @param self The clip.
 * @return A number indicating the starting position.
 */
VENTUS_EXPORT long vus_clip_base_get_start(vus_clip_base *self);

/**
 * Sets the starting position of a clip.
 *
 * @param self The clip.
 * @param value The number to set the starting position to.
 */
VENTUS_EXPORT void vus_clip_base_set_start(vus_clip_base *self, long value);

/**
 * Gets the ending position of a clip.
 *
 * @param self The clip.
 * @return A number indicating the ending position.
 */
VENTUS_EXPORT long vus_clip_base_get_end(vus_clip_base *self);

/**
 * Sets the ending position of a clip.
 *
 * @param self The clip.
 * @param value The number to set the ending position to.
 */
VENTUS_EXPORT void vus_clip_base_set_end(vus_clip_base *self, long value);
